package com.example.demo.support;

import com.google.common.collect.Maps;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;
import java.util.Map;

@EqualsAndHashCode(callSuper = true)
@Data
public class IMDownloadHistoricMessagesResponse extends IMBaseResponse {

    private static final Map<Integer, String> ERROR_CODE_MESSAGE = Maps.newHashMap();

    static {
        ERROR_CODE_MESSAGE.put(1001, "请求非法；请检查“请求 URL”是否正确。");
        ERROR_CODE_MESSAGE.put(1002, "参数非法；请检查是否管理员帐号，必填字段是否填充，或者字段的填充是否满足协议要求。");
        ERROR_CODE_MESSAGE.put(1003, "系统错误。");
        ERROR_CODE_MESSAGE.put(1004, "文件尚未生成，或者请求时段内没有消息。");
        ERROR_CODE_MESSAGE.put(1005, "文件已过期。");
    }

    @Data
    public static class FileInfo {
        // 消息记录文件下载地址
        private String URL;
        // 下载地址过期时间，请在过期前进行下载，若地址失效，请通过该接口重新获取
        private String ExpireTime;
        // GZip 压缩前的文件大小（单位 Byte）
        private Integer FileSize;
        // GZip 压缩前的文件 MD5
        private String FileMD5;
        // GZip 压缩后的文件大小（单位 Byte）
        private Integer GzipSize;
        // GZip 压缩后的文件 MD5
        private String GzipMD5;
    }

    // 消息记录文件下载信息
    protected List<FileInfo> File;
    // 解析下载文件后的信息
    protected List<IMMessage> parsedMessages;

    @Override
    public String transformErrorCode(Integer errorCode) {
        String message = super.transformErrorCode(errorCode);
        if (message != null) {
            return message;
        }
        return ERROR_CODE_MESSAGE.getOrDefault(errorCode, "未知错误");
    }
}
